// https://leetcode.cn/problems/1-bit-and-2-bit-characters/description/?envType=daily-question&envId=2025-11-23

// 算法思路总结：
// 1. 遍历数组模拟字符解码过程
// 2. 遇到1时跳过两个字符（10或11组合）
// 3. 遇到0时跳过一个字符（单个0）
// 4. 检查最后是否落在最后一个字符上
// 5. 时间复杂度：O(N)，空间复杂度：O(1)

#include <iostream>
using namespace std;

#include <vector>
#include <algorithm>

class Solution 
{
public:
    bool isOneBitCharacter(vector<int>& bits) 
    {
        int m = bits.size();
        int i = 0;
        while (i < m - 1) 
        { 
            i += bits[i] + 1; 
        }
        return i == m - 1; 
    }
};

int main()
{
    vector<int> bits1 = {1, 0, 0}, bits2 = {1,1,1,0};
    Solution sol;

    cout << sol.isOneBitCharacter(bits1) << endl;
    cout << sol.isOneBitCharacter(bits2) << endl;

    return 0;
}